.test(@padding; @color) {
  padding: @padding;
  color: @color;
}

.box {
  .test(4px 2px 6px 8px, red);
}

/*
  参数用分号或逗号分隔。建议使用分号。符号逗号具有双重含义：它可以解释为 mixin 参数分隔符或 css 列表分隔符。

  使用逗号作为 mixin 分隔符使得无法创建逗号分隔的列表作为参数。另一方面，如果编译器在 mixin 调用或声明中看到至少一个分号，它假定参数用分号分隔并且所有逗号都属于 css 列表：

  两个参数，每个参数都包含逗号分隔的列表：.name(1, 2, 3; something, else),
  三个参数，每个参数包含一个数字：.name(1, 2, 3),
  使用虚拟分号创建 mixin 调用，其中一个参数包含逗号分隔的 css 列表：.name(1, 2, 3;)，
  逗号分隔的默认值：.name(@param1: red, blue;).

  定义多个具有相同名称和参数数量的 mixin 是合法的。Less 将使用所有可以应用的属性。如果你使用带有一个参数的 mixin，例如.mixin(green);，那么所有带有一个强制参数的 mixin 的属性都将被使用：（很像ts中的重载，根据不同的参数匹配对应的重载函数）
*/

.mixin(@color) {
  color-1: @color;
}
.mixin(@color; @padding: 2) {
  color-2: @color;
  padding-2: @padding;
}
.mixin(@color; @padding; @margin: 2) {
  color-3: @color;
  padding-3: @padding;
  margin: @margin @margin @margin @margin;
}
.some .selector div {
  .mixin(#008000);
}
